<?php
/**
*  获取文件内容函数
* @author barry
* @access public
* @param $file_n 文件名
* @param $char 分割符
* return array
*/
function getf_imf($file_n,$char=''){
    $countent = array();
	//判断是否有这个文件 
	if(!file_exists($file_n)) return false;
	$fp=fopen($file_n,"r");
	if(!$fp) return false; 
	//读取文件内容
	while ($temp=fgets($fp)){
		if ($char != '') $countent[] = explode($char, $temp);
		else  $countent[] = $temp;
	}
	fclose($fp); 
	return $countent;
}

/**
*  获取.csv文件内容
* @author barry
* @access public
* @param $file_n 文件名
* return array
*/
function getf_csv($file_n){
	$countent = array();
	//判断是否有这个文件 
	if(!file_exists($file_n)) return false;
	$fp=fopen($file_n,"r");
	if(!$fp) return false; 
	//读取文件内容
	while ($row=fgetcsv($fp)) $countent[] = $row;
	fclose($fp); 
	return $countent;
}

/**
*  递归创建一个目录
* @author barry
* @access public
* @param $wdir 要创建的路径
* return bool
*/
function cdDir($wdir){
	// 如果目录存在就不用创建了，直接返回True
	if (is_dir($wdir))return true;
	// 如果父目录存在，则直接创建子目录。
	if (is_dir(dirname($wdir))) return mkdir($wdir);
	// 递归创建父目录
	cdDir(dirname($wdir));
	return mkdir($wdir);
}

/**
*  递归读取一个目录下的所有文件结构
* @author barry
* @access public
* @param $path 要创建的路径
* return array
*/
function getDir($path){
	$arr = array();
	$dh = opendir($path);
	// 循环遍历此目录
	while (($row = readdir($dh))!== false) {
		if ('.' == $row || '..' == $row ) continue;
		// 如果是目录则递归处理
		if (is_dir($path.'/'.$row)) {
			$arr["[dir]".$row] = getDir($path.'/'.$row);
		}else{
			// 如果不是目录则将文件(信息)读取保存
			$size = filesize($path."/".$row);
			$cdTime = filectime ($path."/".$row);
			$arr[] = array('filename' => $row , 'size' =>$size ,'time' =>$cdTime);
		}
	}
	closedir($dh);
	return $arr;
} 

/**
*  递归删除目录
* @author barry
* @access public
* @param $path 删除的路径
* return bool
*/
function delDir($path){
	// 如果不是目录 返回失败
	if (!is_dir($path)) return false;
	// 确保此目录下为空
	$dh = opendir($path);
	while (($row = readdir($dh)) !== false) {
		if ($row == '.'||$row == '..') continue;
		if (!is_dir($path."/".$row)) {
			// 如果此目录下有文件 删除所有文件
			unlink($path."/".$row);	
		}else{
			// 如果是目录 则递归处理
			delDir($path."/".$row);  
		}
	}

	closedir($dh);
	rmdir($path);	//删除自身目录
}



function writefile($fname,$str,$mod){
	if (!($fp= fopen($fname,$mod))) return false;
	fwrite($fp, $str);
	return fclose($fp);
}

/**
*  计算一个目录下的所有文件的大小
* @author barry
* @access public
* @param $path 目录路径
* return int
*/
function dirSize($path){
	$size = 0 ;
	$dh = opendir($path);
	// 循环遍历此目录
	while (($row = readdir($dh))!== false) {
		// 剔除虚拟目录
		if ('.' == $row || '..' == $row ) continue;
		// 如果是目录则递归处理
		if (is_dir($path.'/'.$row)) {
			$size += dirSize($path.'/'.$row);
		}else{
			// 如果目录则读取文件大小
			$size += filesize($path."/".$row);
		}
	}
	closedir($dh);
	return $size;
}

/**
*  返回可视化文件大小
* @author barry
* @access public
* @param $num 字节大小
* return str
*/
function showSize($num){
	$a = array('bit','KB','MB','GB','TB');
	for ($i=0; floor($num/1024); $i++) $num = $num/1024;
	return $num.$a[$i];
}